// process 进程  nextTick
// Buffer 缓存区 存储二进制， 16进制
// clearInterval
// clearTimeout
// setInterval
// setTimeout
// clearImmediate
// setImmediate node中

// console.log(Object.keys(process), '进程对象');

// platform window win32  mac

// 1) node库 区分平台 
// console.log(process.platform); // darwin
// 每个系统的 用户文件夹都是不同的 /usr
// window c盘 /users

// 2)  argv 参数列表  cwd 当前工作目录  env

// webpack --port --config --process

// node + 文件名可以执行node脚本

// console.log(process.argv.slice(2)); // 从第二个开始是我们需要用到的用户传递的参数

// 使用 tj  commander 可以帮我们直接实现解析参数的功能 
// 安装  http://npmjs.org/  github  node官方api

let program = require('commander');
// 1.追加参数信息 2.解析参数 
// program.on('--help', function () {
//     console.log('node xxx');
// });
// // 自动配置属性 对应的功能
// // program.option('-p,--port <value>', 'set my port')
// program.command('create').action(function () {
//     console.log('vue create project')
// })
// program.version('1.0.0')
// let obj = program.parse(process.argv);
// console.log(obj.port)
// http-server

// vue的源码
//[--port,3000,--config 123] 迭代的功能
// let obj = process.argv.slice(2).reduce((memo, current, index, arr) => { // 收敛函数
//     if (current.startsWith('--')) { // {port:3000,config:123}
//         memo[current.slice(2)] = arr[index + 1];
//     }
//     return memo;
// }, {})

// console.log(obj);

// 你安装node 就会提供一个npm 管理器 node package manger
// 某个目录下直接使用npm install xxx


// 3) env环境变量  set xxx=xxx   export xxx=xxx
// cross-env 跨平台设置环境变量  可以安装成全局 -g 如果mac 下 需要加sudo 
// npm run serve
// npm run build
// npm run unit
// console.log(process.env)


// 4) cwd current Working directory 当前的工作目录


console.log(process.cwd()); //在哪里运行 就是当前的工作目录

// 每个文件外面 都会包着一层 函数 为了实现模块化 他在当前文件执行的时候 包了一层函数，并且将函数中的this更改了

console.log(arguments); // exports require module __filename __dirname

// // exports require module __filename __dirname也是全局对象 可以直接使用

// console.dir(global, {
//     showHidden: true
// })

// 怎么去实现一个commonjs规范 实现一个require方法

// 作业： 问卷调查的方式
// koa express 